
package io.github.lhdxhl.wechatpay.param;

import io.github.lhdxhl.wechatpay.model.RefundFromModel;
import io.github.lhdxhl.wechatpay.model.RefundGoodsModel;
import lombok.Data;

import java.util.List;


/**
 * @author lsk
 * @version 1.0.0
 * @ClassName WxRefundParam.java
 * @Description 退款请求模板
 * @createTime 2022年08月23日 14:33:00
 */
@Data
public class WxRefundParam {
    /**
     * 微信支付订单号，二选一
     */
    private String transactionId;
    /**
     * 商户订单号
     */
    private String outTradeNo;
    /**
     * 商户退款单号
     */
    private String outRefundNo;
    /**
     * 退款原因
     */
    private String reason;
    /**
     * 退款结果回调url
     */
    private String notifyUrl;
    /**
     * 退款资金来源，若传递此参数则使用对应的资金账户退款，否则默认使用未结算资金退款（仅对老资金流商户适用）。
     * 枚举值：
     * <ul>
     *     <li>AVAILABLE：可用余额账户</li>
     * </ul>
     */
    private String fundsAccount;
    /**
     * 退款订单金额信息
     */
    private RefundAmountParam amount;
    /**
     * 退款订单的商品信息
     */
    private List<RefundGoodsModel> goodsDetail;

    /**
     * @author lsk
     * @version 1.0.0
     * @ClassName RefundAmountParam.java
     * @Description 退款金额请求模板
     * @createTime 2022年08月23日 14:33:00
     */
    @Data
    public static class RefundAmountParam {
        /**
         * 退款出资账户及金额
         */
        private List<RefundFromModel> form;
        /**
         * 原订单金额，币种的最小单位，只能为整数，不能超过原订单支付金额。
         */
        private Integer total;
        /**
         * 符合ISO 4217标准的三位字母代码，目前只支持人民币：CNY。
         */
        private String currency = "CNY";
        /**
         * 退款金额，币种的最小单位，只能为整数，不能超过原订单支付金额。
         */
        private Integer refund;
    }

}